package Dao;

import Model.Staff;
import Model.StaffChanged;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface StaffDao {

    int RecordDel(Staff staffInfobyID);
    /**
     * 接口
     * @return
     */
    List<Staff> getAllStaffList();
    /**
     * 接口
     * @return
     */
    List<StaffChanged> getAllStaffChangedList();

    int deleteByPrimaryKey(Integer id);
    /**
     * 查询/根据id
     * @param id
     */
    Staff findStaffInfobyID(@Param("id") Integer id);
    /**
     * 搜索/信息页面
     * @param StaffName
     * @param StaffYbid
     * @param StaffSbdw
     * @param StaffZylevel
     * @param StaffStatus
     */
    List<Staff> findStaffInfo(@Param("StaffName")String StaffName,
                              @Param("StaffYbid")String StaffYbid,
                              @Param("StaffSbdw")String StaffSbdw,
                              @Param("StaffZylevel")String StaffZylevel,
                              @Param("StaffStatus")List<String> StaffStatus);
    /**
     * 搜索-变更页面
     * @param nameSearch
     * @param ybidSearch
     * @param titleSearch
     * @return
     */
    List<StaffChanged> findStaffChangedInfo(@Param("nameSearch")String nameSearch,
                                            @Param("ybidSearch")String ybidSearch,
                                            @Param("titleSearch")String titleSearch);
    //    查询护工在数据表是否存在及状态
    Staff getStaffStatus(String ybid);

    int updateStaffStatus(Staff staff);
    //    更新
    int updateById(Staff staff);
    // 创建
    int createStaff(Staff staff);
    List<Staff> getList(Staff staff);
    // 导入Excel表格
    void InputExcel(Map<String,Map<String,Object>> param);

    void InsertHistoryChange(Map<String,Object> insertInfo);
    List<Staff> getList2(Staff staff);
    int updatePhone(Staff staff);

    /**
     * 制定派工日程页面：查找是否存在该护工
     * @param StaffYbid
     * @return
     */
    List<Staff> searchStaffbyYbid(@Param("StaffYbid")String StaffYbid);

    /**
     * 制定派工日程页面：查找护工（下半页面）
     * @param NursingName
     * @param NursingYbid
     * @param NursingID
     * @return
     */
    List<Staff> searchArrangeNursing(@Param("NursingName")String NursingName,
                                     @Param("NursingYbid")String NursingYbid,
                                     @Param("NursingID")String NursingID);

    /**
     * 获取护工的ID和name字段
     */
    List<Staff> getHgIdName();

    /**
     * 根据机构去查找护工的名字
     * @param settlement_code
     * @return
     */
    List<Staff> getHgNameByCode(String settlement_code);

    /**
     * 根据护工姓名找到身份证号
     * @param name
     * @return
     */
    List<Staff> getHgIdNumberByName(String name);

    /**
     * 更新护工设备（发放之后添加）
     */
    void updateHgDevice(Staff staff);

    /**
     * 微信小程序：登录页面-搜索护工信息
     * @param StaffYbid
     * @return
     */
    String wechatGetPasswordbyYbid(@Param(value="StaffYbid")String StaffYbid);

    /**
     * 微信小程序：注册：查找是否存在该护工，并获取其身份证号
     * @param StaffYbid
     * @return
     */
    String wechatGetIDbyYbid(@Param(value="StaffYbid")String StaffYbid);
    /**
     * 微信小程序：注册：为护工添加密码
     * @param StaffPassword
     * @param StaffYbid
     * @return
     */
    int wechatInsertPassword(@Param(value="StaffYbid")String StaffYbid,@Param(value="StaffPassword")String StaffPassword);

    /**
     * 护工页面添加权限：根据机构结算代码找到相应护工
     * @param settleCode
     * @return
     */
    List<Staff> getStaffbySettleCode(@Param(value="settleCode")String settleCode);

    /**
     * 护工页面添加权限：根据机构结算代码找到相应护工历史变更
     * @param settleCode
     * @return
     */
    List<StaffChanged> getStaffChangedsbySettleCode(@Param(value="settleCode")String settleCode);

    /**
     * 护工页面添加权限：查找机构的护工
     * @param StaffName
     * @param StaffYbid
     * @param StaffSbdw
     * @param StaffZylevel
     * @param StaffStatus
     * @param settleCode
     * @return
     */
    List<Staff> findStaffInfobySettleCode(@Param(value="settleCode")String settleCode,
                                          @Param(value="StaffName")String StaffName,
                                          @Param(value="StaffYbid")String StaffYbid,
                                          @Param(value="StaffSbdw")String StaffSbdw,
                                          @Param(value="StaffZylevel")String StaffZylevel,
                                          @Param(value="StaffStatus")List<String> StaffStatus);

    /**
     * 护工页面添加权限：搜索历史变更
     * @param nameSearch
     * @param ybidSearch
     * @param titleSearch
     * @param settleCode
     * @return
     */
    List<StaffChanged> findStaffChangedInfobySettleCode(@Param(value="nameSearch")String nameSearch,
                                          @Param(value="ybidSearch")String ybidSearch,
                                          @Param(value="titleSearch")String titleSearch,
                                          @Param(value="settleCode")String settleCode);

    /**
     * 派工日程安排页面：权限：搜索护工
     * @param NursingName
     * @param NursingYbid
     * @param NursingID
     * @param SettleCode
     * @return
     */
    List<Staff> searchArrangeNursingbySettelCode(@Param(value="NursingName")String NursingName,
                                                 @Param(value="NursingYbid")String NursingYbid,
                                                 @Param(value="NursingID")String NursingID,

                                                 @Param(value="SettleCode")String SettleCode);

    /**
     * 根据openId获取设备
     * @param staff
     * @return
     */
    List<Staff> getDeviceByOpenId(Staff staff);
}
